{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 动态面积图"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "### 1. 初始设置\n",
    "\n",
    "首先，导入所需的库，并设置中文字体等。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入所需的库\n",
    "import os\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.ticker as ticker \n",
    "import matplotlib.animation as animation\n",
    "import datetime\n",
    "from IPython.display import HTML\n",
    "\n",
    "# 正常显示中文标签\n",
    "mpl.rcParams['font.sans-serif'] = ['SimHei']\n",
    "\n",
    "# 正常显示负号\n",
    "mpl.rcParams['axes.unicode_minus'] = False\n",
    "\n",
    "# 让网格线显示在下方\n",
    "mpl.rc('axes', axisbelow=True)\n",
    "\n",
    "# 禁用科学计数法\n",
    "pd.set_option('display.float_format', lambda x: '%.2f' % x) \n",
    "\n",
    "# 定义颜色，主色：蓝色，辅助色：灰色，互补色：橙色\n",
    "c = {'蓝色':'#00589F', '深蓝色':'#003867', '浅蓝色':'#5D9BCF',\n",
    "     '灰色':'#999999', '深灰色':'#666666', '浅灰色':'#CCCCCC',\n",
    "     '橙色':'#F68F00', '深橙色':'#A05D00', '浅橙色':'#FBC171'}\n",
    "\n",
    "# 防止动态图显示不完整\n",
    "plt.rcParams['animation.embed_limit'] = 1e100"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2. 定义数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# # 当需要更新数据时，去掉注释后运行一次\n",
    "# import akshare as ak\n",
    "\n",
    "# # 从 akshare 获取历史数据，速度比较慢\n",
    "# df_all_history = ak.covid_19_history()\n",
    "\n",
    "# # 保存到 Excel 文件中，以便下次快速读取数据\n",
    "# df_all_history.to_excel('./data/covid_history.xlsx')\n",
    "\n",
    "# 定义想要展示的国家\n",
    "countries = ['美国']\n",
    "\n",
    "# 从 Excel 文件中读取数据\n",
    "df_all = pd.read_excel('./data/covid_history.xlsx', index_col=0).fillna('')\n",
    "\n",
    "# 将字符串格式的日期转换为日期格式\n",
    "df_all['date'] = pd.to_datetime(df_all['date'])\n",
    "\n",
    "# 排除省份的数据，只保留国家的数据，设置日期为索引\n",
    "dfc = df_all.query(\"province=='' and country==@countries[0]\").set_index('date')\n",
    "\n",
    "# 添加新增确诊列\n",
    "dfc['new'] = dfc.confirmed - dfc.confirmed.shift(1).fillna(0)\n",
    "\n",
    "# 筛选数据\n",
    "df1 = pd.DataFrame(dfc.new)\n",
    "df1.columns = [countries[0]]\n",
    "df1 = df1.fillna(0)\n",
    "df1= df1[df1.index >= '2020-03-01']\n",
    "\n",
    "# 总天数\n",
    "length = df1.shape[0] + 1\n",
    "\n",
    "# 定义填充面积的颜色\n",
    "colors = plt.cm.Spectral_r(df1[countries[0]]/max(df1[countries[0]]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3. 开始画图\n",
    "\n",
    "用「**面向对象**」的方法画图。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7oAAAJyCAYAAADqyLwAAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8GearUAAAgAElEQVR4nOzdd3gU1f4/8Pds3ySbhBJAEZWmcOmoqIAgioKighRFBLmAgoiABUS9XhEBRUFBiooovai0n0oVENQIiCBcQLDQq0Ag2STby/n9ke+M2ezsZjeFZJf363nyQGZmZ87MzuQ5nznnfI4khBAgIiIiIiIiihOasi4AERERERERUUlioEtERERERERxhYEuERERERERxRUGukRERERERBRXGOgSERERERFRXGGgS0RERERERHGFgS4RERERERHFFQa6REREREREFFcY6BIREREREVFcYaBLREREREREcYWBLhEREREREcUVBrpEREREREQUVxjoEhERERERUVxhoEtERERERERxhYEuERERERERxRUGukRERERERBRXGOgSERERERFRXGGgS0RERERERHGFgS4RERERERHFFQa6REREREREFFcY6BIREREREVFcYaBLREREREREcYWBLhEREREREcUVBrpEREREREQUVxjoEhERERERUVxhoEtERERERERxhYEuERERERERxRUGukRERERERBRXGOgSERERERFRXGGgS0RERERERHGFgS4RERERERHFFQa6REREREREFFcY6BIREREREVFcYaBLREREREREcYWBLhEREREREcUVBrpEREREREQUVxjoEhERERERUVxhoEtERERERERxhYEuERERERERxRUGukRERERERBRXGOgSERERERFRXGGgS0RERERERHGFgS4RERERERHFFQa6REREREREFFcY6BIREREREVFcYaBLREREREREcYWBLhEREREREcUVBrpEREREREQUVxjoEhERERERUVxhoEtERERERERxhYEuERERERERxRUGukRERERERBRXGOgSERERERFRXGGgS0RERERERHGFgS4RERERERHFlSs+0PX7/XA6narr3G43fD7fZS5RfPnrr79KZZ8ej6fE9xsPrFYrMjIy4PV6y7ooVMCxY8ewZ88eZGVlhdzm1KlTOHz4cKmWw2azQQhRqscgIiIiKmtXdKD73XffoWHDhnjjjTdU18+dOxdNmzbF4sWLy3VglZOTg6FDh+K2226D3++P+HMulws//vgjxo8fjz/++KPIx79w4QKGDBmCDz/8MGhd+/bt0bhxY3z33XdF3n9+brcb7dq1Q/Xq1bFp06YS2Wco06ZNwwMPPICPP/4Y58+fL9F9//rrr3jppZfw7rvvFuvestls2LZtm/J7p06dkJaWhh07dgAA9u3bFxQ4vf322+jduzdmz55dpIBnxIgRmDp1Kvbv3x92uw0bNpT4i6Jt27Zh4MCBaNu2bYnu++2338b69euDrsdff/2F6dOnY+HChcU+xssvv4xmzZqFvW+nTJmCOnXq4IEHHijSd7N3716kpqbilltuCbnNjBkzkJSUhLFjx0a9fyIiIqJYoSvrApQli8WCP/74A1OnTsXQoUNRvXr1gPUff/wx9u/fj2+++QY9e/aMaJ8LFiyA1WotsTJ26NABdevWDbtNYmIiFi5ciKysLOzfvx+NGzcO2mbLli3Yt28fzpw5g9OnT+PIkSPYtWuX0pq9detWrF69WnX/a9aswdSpU/Hggw9iyJAhQetPnjyJjz/+GGazGffddx9q1qwJADh06BBOnDiBxMRE1KlTJ9pTV7Vo0SKcPn0aDRs2RNu2baP+vNvtxssvv4zevXujefPmYbedPXs29uzZg9WrV6NevXqoUqVKUYsd5Pz585g4cSIqVqyIl156qUj78Hg8aNy4MS5evIg///wTVapUgclkAgCYzWYAwKhRo7B+/XpMmzYNzzzzDABg586dWLFiBdxuN/r37x/1cT///HOcPn0a3bp1w7Jly1S3yczMxL333otq1aph0qRJePzxx4t0jgVZrVbMmjULAHDixAnlXisOr9eLiRMnIjMzE506dcKqVauUdQcPHsTQoUNx6623onfv3sU6jtFoBJD3vKrx+Xz44osvAACDBg2CJElRH8NkMsFqtYY8BgAkJSXBbrcjLS0t6v0TERERxYorOtC95ZZb0Lt3b6xbtw7/+9//AgLd9PR07N69GzVq1MAnn3wCjSayxu9x48bhzz//LLEyLl26NCjQzcnJgcfjgdlshslkgkajQdu2bfHVV19h586daNiwIbxeLxwOBwAgJSUFEyZMwPr165V9JCYmokaNGrjqqqtQpUoVVKxYESdPnkSN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fFbugnzdddeFDCx1Oh0qV66sOs1Ow4YNYbVaYTAYcPjwYXz11VdISkrC3r17gxJBffHFF+jZs2fYQHfbtm0YPXo0Ro8ejc8++6zQcdey4cOHY9q0aZg5cyY2b94cNgEakJc4Tv4eonHx4kU8++yzAPJewrz88stR70Nmt9tRo0YNJCcno3Pnzti9e7cyLn/06NHweDzo3bu30mXcYrEEJM3LysrCTz/9hL179+LXX39Vcgvs2LEDO3bsQK1atXDdddfh8OHDePbZZ+FyuZCSkgK9Xq8E506nEz6fr0QSbhERERGVF1dcoLtnzx5s2LABJpMJZrM5INCV5zO12+0B43IBKFmMHQ4HXnjhhcta5oLluHTpEsxmMzp37ox///vfuP322wHkBZarV69Gq1atcN1118FqtcLpdKJq1arKWNqnn346qJXN5/MhNzcX/fr1U6ag2bJlC9avXw+TyQS32w0gb47OI0eOwGazBSQieuyxx/DSSy9h2rRpAdMwrV27FlarFX369Ck0EHS73Zg3bx4sFktQS6vJZMIrr7yCrVu3QqPR4IMPPgAA/Pzzz1i4cCGGDRumZKaWlxWcXmXYsGE4deqUMl4SACpXroxJkybh0qVL6NevH77++mvodDp88cUXyv4GDx6M+fPn480338R///tf/Pzzz+jevTu2b9+O48ePY968eXj++ecL+daC/f777wDygqbi8Pv9GDlyJD744AN07doVdrsd69atg9frxZNPPolt27bhX//6FwYOHIgFCxYAQFDrozx2NNx0M+F6FuTfZuzYsfD5fBgyZIhqtmM5KVmoQNfr9WLw4MEQQuCOO+6IalqiQYMG4fPPP8eRI0dw55134ocffgjZ0rpz504lg3c0/H4/nnjiCZw/fx7NmzfHxx9/rLqd2+2GzWaD2WyGXq8PuH7i/8ZCO51OuFwu5bu76667VPf11ltv4a233gIA9OzZE0uWLFHWeTwePPLII7Db7dDpdGjUqBGOHz+Om2++GcuXLw8I9v/44w8MGDAAa9euhSRJGD58OCZMmIDExERIklSs3gVERERE5c0VF+iqZUqW7dmzB82aNUPt2rWVQKS8+f3339GoUaOAZQWn2UlPTw9IKuPxeJRA9+effw65706dOin/zz+1ybJly9CjRw+88MILeOONN5TlTz31FIC8Fur33nsPDRo0CDhu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pkyZgg8//BButxsvvvgi3n33XWg0GmzYsAE//vgj2rRpg08//RQvv/wyLl68iObNm2PNmjVwuVy4+eabsX79erRo0QKzZs3CHXfcEXQMt9uNa6+9Nuz0Qi6XK2DeYwD48ccfodPpkJWVpST2Kso4UCEERowYgb179+L48ePK+PM777wTFosFHo8n6NiRkJ8Btfsvvx07duDEiRMBZfd4PEpiNIvFEjA04JdffsGOHTuU7uQAsGbNGkyaNAmjR4/G/fffj/r166NLly64++678a9//Svs9E5CCGRmZuLs2bPIzMxE69atg7bx+Xz47rvvsGDBAixZsgRerxfNmzfH119/Hba7uDwPdSTzghMRERHFjLKNsy+fyZMni/bt2ystbPJP8+bNw3Z7PHXqlOjSpUtAd1BJkkSNGjXEPffcE9TSecMNN0TclTeSn6VLlwaVyePxCL/fL5xOp6hRo4aybcWKFQNabQ8dOiRMJpNISEgQZ8+eDdrPvffeKwAEdGuNVu3atSM+l9tvvz3kfk6fPh3UoiuEEAcPHlS+s9mzZwesy996e/HiRZGeni46deokAIiffvpJ9TjHjh0T1113nQAgPv/884B1S5cuFS+++KKoX7++UmaNRiN69Oghfv/994iux+nTp8U111yjfP7qq6+Ouvu7EHktjXXr1lX2o9PpAlrwjxw5IqZPny7uvfdepUW1UaNGQa3GbrdbzJkzR2ndBSB69eolbDabss22bduUbtkAxCuvvBKwD6fTKQCI6667TrWsrVu3FpUqVRLnz58PWvfAAw8E3ANGozHkd3Pw4EGxc+dO8cMPP4ilS5eKDz74QDzzzDOiVatWAV2n09LSxF133SX0er2yzGw2i9tuu00MHDhQvPHGG2LSpEli8uTJQfdMQVu2bBEAxC233KK6/sCBAxHd208//XTA5+SW9enTpwft8+zZs+L5558P+luUkJAgqlWrJurUqSPq1q0ratWqJa655hqRmpoqtFqtst2YMWOUfXk8HjF9+nTRq1cvUa1atYBr9O6776q2su/atUvUq1dPNGzYUFx99dXKZ1auXBn2WhERERHFkism0N21a5cSEOj1etGpUyfxzTffFDquUHbgwAHRr18/YbFYlIrhsGHDgrarWbNmiXZdXrx4cdjt3nrrLZGSkiLuuOMOsW7duoB1K1asEDfccIMYNWqU6mfbtm2r2uUyGvLY5nDkrsvhxma6XC6xbds2ceTIkYDlP/74o2jbtq3o0aNH0Gd+++03MXnyZHHy5Elx4cIFkZycLACIqlWrhr3+GRkZql2CBw4cqHy3FotFDBkyRBw6dCjsuak5fvy4SElJEQ888IDqC4ZI5eTkiCFDhgitVisWLlwYsG7Tpk1K8HPbbbeJ5cuXq97LPp9PvPrqqwLIG9+6YsUK1WMdOHBA1K9fX7Rr1y4gCBZCCL/fL44ePSpOnjwZ9TnMmDFDVKlSRbRs2VKMHDlS7N+/P+S2w4YNCxlI1qpVSzz55JNi9erVyjjSjIwMMXv2bNG9e/eAQD3/z6xZs8KWTx77He7efOedd8RNN90kbrzxxqCfZs2aiWeffVZkZWUFfCY9PV2kpaWF7PIvRN5388MPP4i33npLPPbYY6JZs2aievXqwmg0hg2qd+3aFbCfTz/9NOA6TZo0Keg7LEjusg7kjfX/z3/+E3Z7IiIiolgjCRGmP2mcee+991C5cmV07tw57Dye4bhcLmzZsgVr167FyJEjUb169RIuZcnzer3FntqnLHm9XrhcroApedSMHz8eCQkJ6NOnT1SZfWVWqxUDBw7EQw89hIcffrhYmYiPHTsWkB24OI4ePao6/+nnn3+OJk2aRDSH6uLFi9GlS5ew52Sz2YLmdr2czp8/j+bNm6NGjRqoW7cu6tevj0aNGqFZs2aFPmdCCBw4cAC//vor9u3bhz/++AOnTp3Cjz/+WCoZpSNx+vTpIv99cLvdcLvd8Pv9AABJkqDT6ZSszAVNnDgRrVq1QsuWLSPa/88//wyv14vrr78+Jv6GEREREUXrigp0iYiIiIiIKP5pyroARERERERERCWJgS4RERERERHFFQa6REREREREFFcY6BIREREREVFcYaBLREREREREcYWBLhEREREREcUVBrpEREREREQUVxjoEhERERERUVxhoEtERERERERxhYEuERERERERxRUGukRERERERBRXGOgSERERERFRXGGgS0RERERERHGFgS4RERERERHFFQa6REREREREFFcY6BIREREREVFcYaBLREREREREcYWBLhEREREREcUVBrpEREREREQUVxjoEhERERERUVxhoEtERERERERxhYEuERERERERxRUGukRERERERBRXGOgSERERERFRXGGgS0RERERE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GpgZEGYMMsjMfO8f3vmWEYxYNcqnj8c5nDPfz/vzGT7fTz7hnKef7+fzrSvPRx5M9dr5uHHjMmbMmNedj/wdr50PDAyU5wAAAHCi0w7djo6OVFdX54ILLigva2hoSEVFRfkJykly4MCBDA4OpqmpKfX19amtrR01P378eA4ePJjGxsZUVFSkqalp1Dx59d7fkftyTzXfv3//SfftAgAAQPImQ3fmzJk566yzysvq6+szY8aMdHR0lJd1dnamqqoqc+fOTWVlZebPnz9q3tXVlcHBwSxatChJsnDhwvJDrpJXI/fgwYPl+aJFi7Jnz54cOXIkyatXe/fs2TPqI9QAAAAw4rRC95VXXklXV9eojy2PuOKKK/Lkk0/m0UcfTXt7e9ra2rJ48eLU1NSU588++2xaW1vT0dGR+++/P83NzeUrskuXLs2RI0dy3333pbOzM/fee28aGxvT3NycJLnoootSW1ubL3/5y3nqqady77335qyzzspFF130dh0DAAAACqSi9NonPZ3C7t2788UvfjF//Md/nPe///0nzTdu3JiNGzdmYGAgCxcuzKpVq8qhmyQ7duzIQw89lL6+vjQ3N2f16tUZP358ed7R0ZF169blwIEDmTp1alavXj3qK4ueffbZfPWrX82Pf/zjNDU1ZeXKlTn//PPf8M21tLRk586db7geAAAAxXFaoXumEroAAAD/8pz2PboAAABwJhC6AAAAFIrQBQAAoFCELgAAAIUidAEAACgUoQsAAEChCF0AAAAKRegCAABQKEIXAACAQhG6AAAAFIrQBQAAoFCELgAAAIUidAEAACgUoQsAAEChCF0AAAAKRegCAABQKEIXAACAQhG6AAAAFIrQBQAAoFCELgAAAIUidAEAACgUoQsAAEChCF0AAAAKRegCAABQKEIXAACAQhG6AAAAFIrQBQAAoFCELgAAAIUidAEAACgUoQsAAEChCF0AAAAKRegCAABQKEIXAACAQhG6AAAAFIrQBQAAoFCELgAAAIUidAEAACgUoQsAAEChCF0AAAAKRegCAABQKEIXAACAQhG6AAAAFIrQBQAAoFCELgAAAIUidAEAACgUoQsAAEChCF0AAAAKRegCAABQKFWnu+JTTz2Vr3/963nxxRczb9683Hrrrampqcnw8HBaW1uzbdu2lEqlXHzxxbnxxhtTWVlZ3vaRRx7J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SZKFCxfmqaeeKn9vbnd3dw4ePFieAwAAwIneMHRnzJiRhoaG3Hfffeno6MiDDz6YH/7wh/noRz+aioqKXH755fn2t7+d73znO/nud7+bxx57LJdddln5HtorrrgiTz75ZB599NG0t7enra0tixcvTk1NTXn+7LPPprW1NR0dHbn//vvT3NxcvmK7dOnSHDlyJPfdd186Oztz7733prGxMc3Nze/gYQEAAOBMVVF67ZOeTqG7uztr167Nj370o5x99tm55pprcumllyZ59cFQra2t2bZtW0qlUi655JKsWLGi/L23SbJx48Zs3LgxAwMDWbhwYVatWlUO3STZsWNHHnroofT19aW5uTmrV6/O+PHjy/OOjo6sW7cuBw4cyNSpU7N69epRX1n0elpaWrJz5843dUAAAAA4s51W6J6phC4AAMC/PKf11GUAAAA4UwhdAAAACkXoAgAAUChCFwAAgEIRugAAABSK0AUAAKBQhC4AAACFInQBAAAoFKELAABAoQhdAAAACkXoAgAAUChCFwAAgEIRugAAABSK0AUAAKBQhC4AAACFInQBAAAoFKELAABAoQhdAAAACkXoAgAAUChCFwAAgEIRugAAABSK0AUAAKBQhC4AAACFInQBAAAoFKELAABAoQhdAAAACkXoAgAAUChCFwAAgEIRugAAABSK0AUAAKBQhC4AAACFInQBAAAoFKELAABAoQhdAAAACkXoAgAAUChCFwAAgEIRugAAABSK0AUAAKBQhC4AAACFInQBAAAoFKELAABAoQhdAAAACkXoAgAAUChCFwAAgEIRugAAABSK0AUAAKBQhC4AAACFInQBAAAolKo3u8GDDz6YDRs25LOf/WzOPffcJMkjjzySTZs2ZWBgIAsWLMgtt9ySmpqa8jbbt29PW1tb+vv7M2vWrKxZsybjx48vz3fv3p0HHnggBw4cyNSpU3PrrbdmypQp5fnevXvzta99LT/+8Y/T1NSUm2++OTNnznwr7xsAAICCelNXdPv6+vLYY4+NWrZjx460trbm6quvzm233Zaurq6sXbu2PO/q6so999yTlpaW3H777Tl06FDuvvvu8rynpyd33XVXZsyYkTvuuCOVlZW58847MzQ0lCQ5cuRIvvjFL6a+vj533HFHJk+enP/yX/5LfvKTn7yV9w0AAEBBvanQXb9+fUql0qhlmzdvTktLS6688sosWrQo119/fXbu3JmjR4+W59OnT88NN9yQefPm5aabbkpXV1f27duXJHn88cdTV1eXVatWZfbs2Vm9enV6enrS2dmZJNm5c2eOHTuW3/qt38rs2bOzZs2aDA4O5u///u/fjvcPAABAwZx26Pb29ubxxx/P8uXLy8v6+vqyd+/ezJ07t7xszpw5GRwczK5duzI0NJRdu3aNms+cOTPV1dVpb29PkrS3t2f27NmprKxMkkyePDmTJ08eNZ8xY0Zqa2uTJDU1NZkxY0Z5DgAAACc67dD95je/mZkzZ2bOnDnlZd3d3SmVSmlqaiovmzhxYqqrq9Pb25u+vr4cO3YsjY2N5XlVVVUmTZqU3t7eDA8Pp7e3d9Q8SRoaGtLT05Pk1Y82/7Q5AAAAnOi0Hkb13HPPZefOnfm93/u9vPLKK+XlL730UpKUr7aOqK2tTX9/f/r7+5MkY8eOPeX8yJEjGR4ePmk+duzYvPDCC0mS/v7+U85H/u7X2rJlS7Zu3ZokOXToUPkj0AAAABTL7NmzT7n8tEL3wQcfzMKFCzN9+vQ8/fTT5eUVFRWnXL9UKqWioqI8f+19vW80Hx4eLs8qKip+6vy1li1blmXLliVJWltbX/eNAwAAUExv+NHlZ555Jh0dHbn++uszNDSU4eHhJK/G6dlnn50kefnll0dtc/To0dTV1aW+vr78+lTzcePGZcyYMa87T5L6+vqT5gMDA+U5AAAAnOgNr+g+/fTTKZVK+ZM/+ZNRyz/1qU/l8ssvT0VFRfbt25cZM2YkSQ4cOJDBwcE0NTWlvr4+tbW15ScsJ8nx48dz8ODBLF26NBUVFWlqaho1T16993fevHlJcsr5/v37T7pvFwAAAJLTCN3LLrss8+fPL7/+x3/8x3z1q1/Nxz/+8UybNi3PP/98Ojo6snTp0iRJZ2dnqqqqMnfu3FRWVmb+/PnlK8LJq9+rOzg4mEWLFiVJFi5cmO3bt2doaCiVlZXp7u7OwYMHy/NFixZl7dq1OXLkSMaNG5ejR49mz549+Y3f+I23/WAAAABw5nvDjy5PmDAhP//zP1/+M3Il9bzzzsuECRNyxRVX5Mknn8yjjz6a9vb2tLW1ZfHixampqUmSXHHFFXn22WfT2tqajo6O3H///Wlubi7/nqVLl+bIkSO577770tnZmXvvvTeNjY1pbm5Oklx00UWpra3Nl7/85Tz11FO59957c9ZZZ+Wiiy56p44JAAAAZ7DTehjVT7N48eL09fXlW9/6VgYGBrJw4cLcdNNN5fn555+f3/zN38xDDz2UTZs2pbm5OatXry7PJ0+enN/5nd/JunXr8sQTT2Tq1Kn5+Mc/Xv5e3dra2nziE5/IV7/61XzpS19KU1NT7rjjjowbN+6t7joAAAAFVFF67SONC6SlpSU7d+58t3cDAACAn6E3/OgyAAAAnEmELgAAAIUidAEAACgUoQsAAEChCF0AAAAKRegCAABQKEIXAACAQhG6AAAAFIrQBQAAoFCELgAAAIUidAEAACgUoQsAAEChCF0AAAAKRegCAABQKEIXAACAQhG6AAAAFIrQBQAAoFCELgAAAIUidAEAACgUoQsAAEChCF0AAAAKRegCAABQKEIXAACAQhG6AAAAFIrQBQAAoFCELgAAAIUidAEAACgUoQsAAEChCF0AAAAKRegCAABQKEIXAACAQhG6AAAAFIrQBQAAoFCELgAAAIUidAEAACgUoQsAAEChCF0AAAAKRegCAABQKEIXAACAQhG6AAAAFIrQBQAAoFCELgAAAIXStgN5AAAgAElEQVQidAEAACgUoQsAAEChCF0AAAAKRegCAABQKEIXAACAQhG6AAAAFErV6az0yiuv5P7778+TTz6Z6urqLFmyJNddd13GjBmT4eHhtLa2Ztu2bSmVSrn44otz4403prKysrz9I488kk2bNmVgYCALFizILbfckpqamvJ8+/btaWtrS39/f2bNmpU1a9Zk/Pjx5fnu3bvzwAMP5MCBA5k6dWpuvfXWTJky5W08DAAAABTFaV3RbW1tzTPPPJM1a9bkuuuuy7e+9a1s27YtSbJhw4Zs3rw5K1asyMqVK7N9+/asX7++vO2OHTvS2tqaq6++Orfddlu6urqydu3a8ryrqyv33HNPWlpacvvtt+fQoUO5++67y/Oenp7cddddmTFjRu64445UVlbmzjvvzNDQ0Nt1DAAAACiQNwzd4eHhbNu2Lddff30WLlyYSy+9NHPnzs3u3btTKpWyZcuWLF++PEuWLMnixYvzkY98JFu3bs3w8HCSZPPmzWlpacmVV16ZRYsW5frrr8/OnTtz9OjR8nz69Om54YYbMm/evNx0003p6urKvn37kiSPP/546urqsmrVqsyePTurV69OT09POjs738HDAgAAwJnqDUN3cHAwH/vYx/LBD36wvGxoaCilUil79uzJ4cOHM3fu3PJszpw56e/vz549e9LX15e9e/eeNB8cHMyuXbsyNDSUXbt2jZrPnDkz1dXVaW9vT5K0t7dn9uzZ5Y9CT548OZMnTy7PAQAA4ERvGLpnnXVWLrnkkpx99tl55ZVX0t7ens7OzixYsCDd3d1JkqampvL6DQ0NSZLe3t50d3enVCqNmk+cODHV1dXp7e1NX19fjh07lsbGxvK8qqoqkyZNSm9vb4aHh9Pb2ztqPvJ39PT0vLV3DgAAQCG9qacuf+UrX8ldd92VCy+8MJdeemn6+/uTJLW1teV1Rn7u7+/PSy+9dNJ85HV/f395+7Fjx55yfuTIkQwPD580Hzt2bPl3AwAAwIlO66nLI6655pqcd955+eY3v5lZs2ZlzJiTO7lUKiVJKioqUlFRccrfUyqVRs1Htjnd+fDw8Ov+7i1btmTr1q1JkkOHDrmXFwAAoKBmz559yuVvKnSnTJmSKVOm5Lnnnsujjz6aX/mVX0mSvPzyy+WvAxp5yFRdXV3q6+vL8xMdPXp01HxkmxPn5513XsaNG5cxY8accl5XV3fKfVy2bFmWLVuW5NWnRb/eGwcAAKCY3vCjy7t27cpnPvOZHD9+vLzs3HPPzaFDh8r33u7fv788G/m5qakpDQ0NqaioKD9BOUkOHDiQwcHBNDU1pb6+PrW1taPmx48fz8GDB9PY2JiKioo0NTWNmidJd3f3SfftAgAAQHIaoTt27Nj8+Mc/HhWbPT09OffcczNt2rRMnDgxu3fvLs86OzszYcKETJs2LfX19ZkxY0Y6OjpGzauqqjJ37txUVlZm/vz5o+ZdXV0ZHBzMokWLkiQLFy7MU089Vf7e3O7u7hw8eLA8BwAAgBO9YehOnz49U6ZMyVe/+tXs3r07mzZtyve+971cfvnlqaioyOWXX55vf/vb+c53vpPvfve7eeyxx3LZZZeV76G94oor8uSTT+bRRx9Ne3t72trasnjx4tTU1JTnzz77bFpbW9PR0ZH7778/zc3N5Su2S5cuzZEjR3Lfffels7Mz9957bxobG9Pc3PwOHhYAAADOVBWl1z7p6RQOHTqUr3/963n66adTW1ubyy+/PFdddVXGjBmT4eHhtLa2Ztu2bSmVSrnkkkuyYsWK8vfeJsnGjRuzcePGDAwMZOHChVm1alU5dJNkx44deeihh9LX15fm5uasXr26fM9vknR0dGTdunU5cOBApk6dmtWrV4/6yqLX09LSkp07d77ZYwIAAMAZ7LRC90wldAEAAP7leVPfowsAAADvdUIXAACAQhG6AAAAFIrQBQAAoFCELgAAAIUidAEAACgUoQsAAEChCF0AAAAKRegCAABQKEIXAACAQhG6AAAAFIrQBQAAoFCELgAAAIUidAEAACgUoQsAAEChCF0AAAAKRegCAABQKEIXAACAQhG6AAAAFIrQBQAAoFCELgAAAIUidAEAACgUoQsAAEChCF0AAAAKRegCAABQKEIXAACAQhG6AAAAFIrQBQAAoFCELgAAAIUidAEAACgUoQsAAEChCF0AAAAKRegCAABQKEIXAACAQhG6AAAAFIrQBQAAoFCELgAAAIUidAEAACgUoQsAAEChCF0AAAAKRegCAABQKEIXAACAQhG6AAAAFIrQBQAAoFCELgAAAIUidAEAACgUoQsAAEChCF0AAAAKRegCAABQKFWns9Lw8HBaW1uzbdu2jBkzJhdeeGFuvPHGVFdXj5qVSqVcfPHFufHGG1NZWVne/pFHHsmmTZsyMDCQBQsW5JZbbklNTU15vn379rS1taW/vz+zZs3KmjVrMn78+PJ89+7deeCBB3LgwIFMnTo1t956a6ZMmfI2HgYAAACK4rSu6D7++ON57LHH8mu/9mv59V//9Wzfvj3r169PkmzYsCGbN2/OihUrsnLlylGzJNmxY0daW1tz9dVX57bbbktXV1fWrl1bnnd1deWee+5JS0tLbr/99hw6dCh33313ed7T05O77rorM2bMyB133JHKysrceeedGRoaeruOAQAAAAVyWqG7bdu2XHzxxVm2bFk+/OEP56KLLsoTTzyRUqmULVu2ZPny5VmyZEkWL16cj3zkI9m6dWuGh4eTJJs3b05LS0uuvPLKLFq0KNdff3127tyZo0ePlufTp0/PDTfckHnz5uWmm25KV1dX9u3bl+TVyK6rq8uqVasye/bsrF69Oj09Pens7HyHDgkAAABnstMK3Z6ennzgAx8ov66vr09fX1/27NmTw4cPZ+7cueXZnDlz0t/fnz179qSvry979+49aT44OJhdu3ZlaGgou3btGjWfOXNmqqur097eniRpb2/P7Nmzyx+Fnjx5ciZPnlyeAwAAwIlO6x7dT33qUxk3blz59fPPP59zzjkn3d3dSZKmpqbyrKGhIUnS29uboaGhlEqlUfOJEyemuro6vb296evry7Fjx9LY2PhPO1RVlUmTJqW3tzfDw8Pp7e3NkiVLRu1PQ0NDenp6/hlvFwAAgKI7rdCdNGlS+ecf/OAH+f73v58VK1akv78/SVJbW1uej/zc39+f6urqk+Yjr/v7+8vbjx079pTzI0eOZHh4+KT52LFj88ILL5xyX7ds2ZKtW7cmSQ4dOuQjzgAAAAU1e/bsUy4/rdAd0dPTk//6X/9rPvjBD2b58uXZtGnTSeuUSqUkSUVFRSoqKk75e0ql0qj5yDanOx8eHn7d371s2bIsW7YsSdLa2vq6bxwAAIBiOu3v0T1w4EA+//nP59xzz81v//ZvZ8yYMamrq0uSvPzyy+X1Rh4yVVdXl/r6+pPmI+ucOB/Z5rXzcePGZcyYMa87BwAAgNc6rdAdGBjIl770pYwfPz6f/OQny9+BO3Lv7f79+8vrjvzc1NSUhoaGVFRUlJ+gnLwazIODg2lqakp9fX1qa2tHzY8fP56DBw+msbExFRUVaWpqGjVPku7u7lH39QIAAMCI0wrdb37zmxkYGMgnPvGJUffbTps2LRMnTszu3bvLyzo7OzNhwoRMmzYt9fX1mTFjRjo6OkbNq6qqMnfu3FRWVmb+/Pmj5l1dXRkcHMyiRYuSJAsXLsxTTz1V/t7c7u7uHDx4sDwHAACAE71h6L700kvZsmVLLrnkkvT09ORHP/pR+c/g4GAuv/zyfPvb3853vvOdfPe7381jjz2Wyy67rHwP7RVXXJEnn3wyjz76aNrb29PW1pbFixeXrwpfccUVefbZZ9Pa2pqOjo7cf//9aW5uLl+xXbp0aY4cOZL77rsvnZ2duffee9PY2Jjm5uZ38LAAAABwpqoovfZJT6/x9NNP5/Of//wpZ5/97GdzzjnnpLW1Ndu2bUupVMoll1ySFStWlL/3Nkk2btyYjRs3ZmBgIAsXLsyqVavKoZskO3bsyEMPPZS+vr40Nzdn9erVGT9+fHne0dGRdevW5cCBA5k6dWpWr1496iuLXk9LS0t27tz5husBAABQHG8YumcyoQsAAPAvz2k/dRkAAADOBEIXAACAQhG6AAAAFIrQBQAAoFCELgAAAIUidAEAACgUoQsAAEChCF0AAAAKRegCAABQKEIXAACAQhG6AAAAFIrQBQAAoFCELgAAAIUidAEAACgUoQsAAEChCF0AAAAKRegCAABQKEIXAACAQhG6AAAAFIrQBQAAoFCELgAAAIUidAEAACgUoQsAAEChCF0AAAAKRegCAABQKEIXAACAQhG6AAAAFIrQBQAAoFCELgAAAIUidAEAACgUoQsAAEChCF0AAAAKRegCAABQKEIXAACAQhG6AAAAFIrQBQAAoFCELgAAAIUidAEAACgUoQsAAEChCF0AAAAKRegCAABQKEIXAACAQhG6AAAAFIrQBQAAoFCELgAAAIUidAEAACgUoQsAAEChCF0AAAAKperNrNzT05OvfOUr+d3f/d3ysldeeSVr167Nk08+merq6vziL/5ifuVXfqU8Hx4eTmtra7Zt25ZSqZSLL744N954YyorK8vrPPLII9m0aVMGBgayYMGC3HLLLampqSnPt2/fnra2tvT392fWrFlZs2ZNxo8f/1beNwAAAAV1Wld0h4aG8txzz+XLX/7ySbO/+qu/yq5du7JmzZpce+21aWtry7Zt28rzDRs2ZPPmzVmxYkVWrlyZ7du3Z/369eX5jh070tramquvvjq33XZburq6snbt2vK8q6sr99xzT1paWnL77bfn0KFDufvuu9/KewYAAKDATuuK7sMPP5y2trYkyQUXXFBefvTo0fzd3/1dbrrpplx44YVJkj179mTLli1ZunRpSqVStmzZkuXLl2fJkiVJkv3792fr1q259tprM2bMmGzevDktLS258sorkyRHjhzJ1772tdx8882pra3N5s2bM3369Nxwww2v7nBVVb7whS9k3759mTJlytt3JAAAACiE07qie9lll+X3f//3M3/+/FHLd+/encHBwcybN6+8bPbs2Xn22Wdz+PDh7NmzJ4cPH87cuXPL8zlz5qS/vz979uxJX19f9u7de9J8cHAwu3btytDQUHbt2jVqPnPmzFRXV6e9vf2f/aYBAAAortO6ojthwoRMmDAhZ599do4dO1Ze3t3dnerq6pxzzjnlZY2NjSmVSunt7c2BAweSJE1NTeV5Q0NDkqS3tzdDQ0MplUqj5hMnTkx1dXV6e3vT19eXY8eOpbGx8Z92uKoqkyZNSm9v7z/zLQMAAFBkb+phVK/V39+f2traUctGXvf396e/v3/UstfOq6ur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\n",
      "text/plain": [
       "<Figure size 1152x648 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 使用「面向对象」的方法画图，定义图片的大小\n",
    "fig, ax = plt.subplots(figsize=(16, 9))\n",
    "\n",
    "# 设置背景颜色\n",
    "fig.set_facecolor('w')\n",
    "ax.set_facecolor('w')\n",
    "\n",
    "# 隐藏边框\n",
    "ax.spines['top'].set_visible(False)\n",
    "ax.spines['right'].set_visible(False)\n",
    "\n",
    "# 设置坐标标签字体大小和颜色\n",
    "ax.tick_params(labelsize=16, colors=c['深灰色'])\n",
    "\n",
    "# 定义动画函数\n",
    "def animate(num): \n",
    "    # 先清空画面\n",
    "    ax.clear()\n",
    "    \n",
    "    # 动态显示新的数据\n",
    "    df_temp = df1.iloc[0:num, :]\n",
    "    idx = df_temp.index\n",
    "\n",
    "    # 绘制折线图\n",
    "    ax.plot(idx, df_temp[countries[0]], color=c['蓝色'], linewidth=3, zorder=2)\n",
    "    # 用条形图填充为面积图，用不同的颜色表示数值的大小\n",
    "    ax.bar(idx, df_temp[countries[0]], width=1.5, align='center', color=colors)\n",
    "    \n",
    "    string = '○'+str(int(df_temp[countries[0]][-1]))\n",
    "    ax.text(idx[-1], df_temp[countries[0]][-1], string, size=20, ha='left', va='center', color=c['蓝色'])\n",
    "\n",
    "    # 设置标题\n",
    "    ax.set_title('\\n\\n'+countries[0]+'新增确诊人数的变化趋势\\n', loc='left', fontsize=26)\n",
    "    \n",
    "    # 设置 X 轴坐标范围\n",
    "    ax.set_xlim(df1.index[0]+datetime.timedelta(days=-5), df1.index[-1]+datetime.timedelta(days=5))\n",
    "    \n",
    "    # 设置 Y 轴坐标范围\n",
    "    ax.set_ylim(0, max(df1[countries[0]]))\n",
    "    \n",
    "    # 图片背景显示日期的动态变化\n",
    "    ymax = ax.get_ylim()[1]\n",
    "    string = (df1.index[0]+datetime.timedelta(days=int(num-1))).strftime('%Y年%m月%d日')\n",
    "    ax.text(df1.index[0], ymax, string, ha='left', va='top', fontsize=60, color=c['灰色'], zorder=-1, alpha=0.2)\n",
    "    \n",
    "    # 设置网络线\n",
    "    ax.grid(axis='y', color=c['浅灰色'])\n",
    "    \n",
    "    \n",
    "# 绘制动画\n",
    "animator = animation.FuncAnimation(fig, animate, frames=np.arange(1, length, 1), interval=100)\n",
    "\n",
    "# 在 Jupyter Notebook 中显示动画\n",
    "# HTML(animator.to_jshtml())\n",
    "\n",
    "# 保存为 mp4 的文件格式，需要安装二进制文件 ffmpeg，下载地址：http://www.ffmpeg.org/download.html\n",
    "animator.save('动态面积图.mp4')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " "
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
